package com.xianniu.ltc.service;

import cn.devezhao.persist4j.Record;
import com.alibaba.fastjson.JSONAware;
import com.alibaba.fastjson.JSONObject;
import com.xianniu.ltc.model.po.report.ChartCommonPermissionsPO;
import com.xianniu.ltc.model.po.report.ReportLeadPO;
import com.xianniu.ltc.model.vo.StatisticsXYVO;
import com.xxl.sso.core.entity.ReturnT;

import java.util.Map;

/**
 * @author WangRuiJie
 * @Title: CustomizedService
 * @Package com.xianniu.ltc.service
 * @Description:
 * @date 2021/7/163:18 下午
 */
public interface CustomizedService {

    /**
     * 校验勾选的采购订单是否存在已对账的数据
     * @return
     */
    boolean checkIsReconciliation(String[] ids);

    /**
     * 校验勾选的采购订单是否是统一供应商
     * @return
     */
    boolean checkIsSameSupplier(String[] ids);

    /**
     * 采购单创建为对账单
     * @param ids
     * @return
     */
    ReturnT saveReconciliationOrder(String[] ids);

    /**
     * 对账单-完成对账单
     * @param ids
     * @return
     */
    ReturnT completeStatements(String[] ids);

    /**
     * 校验对账单是否已完成
     * @param data
     * @return
     */
    boolean doStatements(Record data);

    /**
     * 服务请求，报价金额大于商机金额判断
     *  报价金额>商机金额 && 对应商机生成了特殊价格审批 && 特殊价格审批为通过 则为true
     * @param data
     * @return
     */
    boolean doCheckMoneyForServiceRequest(Record data);

    /************************** 定制化报表列表相关 *****************************/

    JSONAware reportDataList (String entity, ReportLeadPO po);

    /**
     * 通过当前用户查询对应实体的权限
     * @param entityCode
     * @return
     */
    JSONObject selectPrivilegeByCurrentUser(int entityCode);


    /************************** APP首页图标相关 *****************************/

    /**
     * 本年回款统计：按周查询计划回款，按时收款，逾期收款数据
     * @return
     */
    StatisticsXYVO selectWeekCashTransferSchemesData(ChartCommonPermissionsPO po);

    /**
     * 本年回款统计：按月查询计划回款，按时收款，逾期收款数据
     * @return
     */
    Map<String, StatisticsXYVO> selectMonthCashTransferSchemesData(ChartCommonPermissionsPO po);

    /**
     * 本年回款统计：按季度查询计划回款，按时收款，逾期收款数据
     * @return
     */
    JSONObject selectQuarterCashTransferSchemesData(ChartCommonPermissionsPO po);

    /**
     * 统计-本年-各地域-签约额
     * @return
     */
    StatisticsXYVO queryNowYearCityTop(ChartCommonPermissionsPO po);

    /**
     * 统计-本年-各客户-签约额
     * @return
     */
    StatisticsXYVO queryNowYearKeHuTop(ChartCommonPermissionsPO po);

    /**
     * 统计-本年-各销售部门-签约额
     * @return
     */
    StatisticsXYVO queryNowYearXiaoShouBuMen(ChartCommonPermissionsPO po);

    /**
     * 统计-本年-签约额-按周
     * @return
     */
    StatisticsXYVO queryNowYearWeek(ChartCommonPermissionsPO po);

    /**
     * 统计-历史累计应收未收款统计
     * @param po
     * @return
     */
    StatisticsXYVO queryHistoryWeiShouKuan(ChartCommonPermissionsPO po);

    /**
     * 统计-本年-月+季-签约额
     * @param po
     * @return
     */
    Map<String, StatisticsXYVO> queryNowYearMonthAndQuarter( ChartCommonPermissionsPO po );
}
